// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

package org.jetbrains.kotlin.idea.fir.search.refIndex;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode;
import org.jetbrains.kotlin.idea.base.test.TestRoot;
import org.jetbrains.kotlin.idea.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.idea.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

/**
 * This class is generated by {@link org.jetbrains.kotlin.testGenerator.generator.TestGenerator}.
 * DO NOT MODIFY MANUALLY.
 */
@SuppressWarnings("all")
@TestRoot("compiler-reference-index/tests.k2")
@TestDataPath("$CONTENT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../tests/testData/compilerIndexByReference")
public abstract class KotlinCompilerReferenceByReferenceFirTestGenerated extends AbstractKotlinCompilerReferenceByReferenceFirTest {
    @RunWith(JUnit3RunnerWithInners.class)
    @TestMetadata("../tests/testData/compilerIndexByReference/library")
    public abstract static class Library extends AbstractKotlinCompilerReferenceByReferenceFirTest {
        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../tests/testData/compilerIndexByReference/library/any")
        public abstract static class Any extends AbstractKotlinCompilerReferenceByReferenceFirTest {
            @RunWith(JUnit3RunnerWithInners.class)
            @TestMetadata("../tests/testData/compilerIndexByReference/library/any")
            public static class TestHashCode extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                @java.lang.Override
                @org.jetbrains.annotations.NotNull
                public final KotlinPluginMode getPluginMode() {
                    return KotlinPluginMode.K2;
                }

                private void runTest(String testDataFilePath) throws Exception {
                    KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
                }

                @TestMetadata("hashCode")
                public void testHashCode() throws Exception {
                    runTest("../tests/testData/compilerIndexByReference/library/any/hashCode/");
                }
            }
        }

        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../tests/testData/compilerIndexByReference/library/long")
        public abstract static class Long extends AbstractKotlinCompilerReferenceByReferenceFirTest {
            @RunWith(JUnit3RunnerWithInners.class)
            @TestMetadata("../tests/testData/compilerIndexByReference/library/long/class")
            public abstract static class Class extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                @RunWith(JUnit3RunnerWithInners.class)
                @TestMetadata("../tests/testData/compilerIndexByReference/library/long/class")
                public static class TestClass extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                    @java.lang.Override
                    @org.jetbrains.annotations.NotNull
                    public final KotlinPluginMode getPluginMode() {
                        return KotlinPluginMode.K2;
                    }

                    private void runTest(String testDataFilePath) throws Exception {
                        KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
                    }

                    @TestMetadata("class")
                    public void testClass() throws Exception {
                        runTest("../tests/testData/compilerIndexByReference/library/long/class/class/");
                    }
                }
            }
        }

        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../tests/testData/compilerIndexByReference/library/object")
        public abstract static class Object extends AbstractKotlinCompilerReferenceByReferenceFirTest {
            @RunWith(JUnit3RunnerWithInners.class)
            @TestMetadata("../tests/testData/compilerIndexByReference/library/object")
            public static class TestHashCode extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                @java.lang.Override
                @org.jetbrains.annotations.NotNull
                public final KotlinPluginMode getPluginMode() {
                    return KotlinPluginMode.K2;
                }

                private void runTest(String testDataFilePath) throws Exception {
                    KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
                }

                @TestMetadata("hashCode")
                public void testHashCode() throws Exception {
                    runTest("../tests/testData/compilerIndexByReference/library/object/hashCode/");
                }
            }
        }

        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../tests/testData/compilerIndexByReference/library/string_")
        public abstract static class String_ extends AbstractKotlinCompilerReferenceByReferenceFirTest {
            @RunWith(JUnit3RunnerWithInners.class)
            @TestMetadata("../tests/testData/compilerIndexByReference/library/string_")
            public static class TestClass extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                @java.lang.Override
                @org.jetbrains.annotations.NotNull
                public final KotlinPluginMode getPluginMode() {
                    return KotlinPluginMode.K2;
                }

                private void runTest(String testDataFilePath) throws Exception {
                    KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
                }

                @TestMetadata("class")
                public void testClass() throws Exception {
                    runTest("../tests/testData/compilerIndexByReference/library/string_/class/");
                }
            }

            @RunWith(JUnit3RunnerWithInners.class)
            @TestMetadata("../tests/testData/compilerIndexByReference/library/string_")
            public static class TestLength extends AbstractKotlinCompilerReferenceByReferenceFirTest {
                @java.lang.Override
                @org.jetbrains.annotations.NotNull
                public final KotlinPluginMode getPluginMode() {
                    return KotlinPluginMode.K2;
                }

                private void runTest(String testDataFilePath) throws Exception {
                    KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
                }

                @TestMetadata("length")
                public void testLength() throws Exception {
                    runTest("../tests/testData/compilerIndexByReference/library/string_/length/");
                }
            }
        }
    }
}
